Cours : La mémoire virtuelle

 
 
Ce cours s'intéresse au principe de la mémoire virtuelle. Il aborde notamment les notions liées aux défauts de pages.

1 Principe de la mémoire virtuelle

 
 
La multiprogrammation implique de charger plusieurs programmes en mémoire centrale de manière à obtenir un bon taux d'utilisation du processeur. Supposons comme sur la figure 1 ici que l'exécution des programmes 1, 2 et 3 soit nécessaire pour obtenir ce taux d'utilisation du cpu satisfaisant. On peut remarquer qu'une fois les programmes 1 et 2 chargés dans la mémoire, toutes les cases sont occupées : le programme 3 ne peut pas être chargé.
Fig 1 : Cas de figure
 
 
Lorsque l'on regarde l'exécution d'un processus, on s'aperçoit qu'à un instant donné le processus n'accède qu'à une partie de son espace d'adressage (par exemple la page de code couramment exécutée par le processeur et la page de données correspondante). Les autres pages de l'espace d'adressage ne sont pas accédées et sont donc inutiles en mémoire centrale. Une solution pour pouvoir charger plus de programmes dans la mémoire centrale est donc de ne charger pour chaque programme que les pages couramment utilisées. Ici par exemple, seules les pages 1,2 et 4 du processus 1 sont chargées ainsi que la page 3 du processus 2 et les pages 1,2,3 du programme 3.
 
 
Puisque les pages d'un espace d'adressage de processus ne sont pas toutes chargées en mémoire centrale, il faut que le processeur puisse détecter leur éventuelle absence lorsqu'il cherche à effectuer une conversion d'adresse paginée vers l'adresse physique. Chaque entrée de la table des pages com port e alors un champ supplémentaire, le bit Validation V, qui est à vrai (1 ou V) si la page est effectivement présente en mémoire centrale.
 
 
La figure 2 montre les valeurs des bits de validation pour les tables des pages des trois processus 1, 2 et 3, en tenant compte des chargements de leurs pages en mémoire centrale. Ainsi pour le processus 1, la page 1 est chargée dans la case 2, le bit de validation est à vrai (V). La page 2 est chargée dans la case 4, le bit de validation est à vrai. Par contre la page 3 n'est pas présente en mémoire centrale et donc le bit de validation est à faux (I pour Invalide) : dans ce cas, le champs n° de case n'a pas de signification.
Fig 2 : Bit de validation

2 Notion de défaut de pages

Que se passe-t-il à présent lorsque qu'un processus tente d'accéder à une page de son espace d'adressage qui n'est pas en mémoire centrale ? Ici le processus 2 génère une adresse paginée portant sur la page 2. La MMU accède à la table des pages pour effectuer la conversion adresse paginée, adresse physique et teste la valeur du bit de validation : elle le trouve à faux, ce qui veut dire que la page n'est pas chargée dans une case et donc la conversion ne peut être réalisée. Il se produit alors un défaut de page : c'est un déroutement qui oblige le processeur à suspendre l'exécution du programme en cours pour lancer une entrée/sortie qui charge la page manquante en mémoire centrale dans une case libre.
Définition : Défaut de page
Le défaut de page est un déroutement qui oblige le processeur à suspendre l'exécution du programme en cours pour lancer une entrée/sortie qui charge la page manquante en mémoire centrale dans une case libre.
 
 
Les figures 3 et 4 illustrent le mécanisme de défaut de page. Le processus cherche à convertir l'adresse logique <p,d>. Il accède donc à l'entrée de sa table des pages correspondant à l'entrée de la page p, et teste la valeur du bit de validation. Celui-ci est à faux (I) indiquant ainsi que la page n'est pas présente. Automatiquement, puisque la traduction vers l'adresse physique ne peut pas être faite, le système lève un défaut de page, qui entraine une entrée/sortie pour charger la page manquante en mémoire centrale. Le défaut de page charge la page manquante dans une case libre de la mémoire centrale, puis le système met à jour l'entrée de la table des pages correspondant à la page p : le bit de validation passe à vrai et le numéro de case physique contenant la page p est renseigné. Enfin, la traduction vers l'adresse physique reprend.
Fig 3 : Mécanisme du défaut de pages

Fig 4 : Mécanisme du défaut de pages

3 Les algorithmes de remplacement de pages

 
 
Lors d'un défaut de page, la page manquante est chargée dans une case libre. La totalité des cases de la mémoire centrale peut être occupée : il faut donc libérer une case de la mémoire physique globalement (parmi l'ensemble des cases) ou localement (parmi les cases occupées par les pages du processus en défaut). Le système d'exploitation utilise un algorithme pour choisir une case à libérer. Les deux principaux algorithmes sont :
  • FIFO (First In, First Out)
  • LRU (Least Recently Used)

3.1 Algorithme de remplacement de pages FIFO

 
 
Avec cet algorithme, c'est la page la plus anciennement chargée qui est remplacée. La figure 5 donne un exemple du fonctionnement de cet algorithme où l'on suppose une mémoire centrale composée de trois cases initialement vides. La lettre D signale l'occurrence de défaut de pages. 
Fig 5 : Remplacement de pages FIFO

3.2 Algorithme de remplacement de pages LRU

 
 
Avec cet algorithme, c'est la page la moins récemment accédée qui est remplacée. La figure 6 donne un exemple du fonctionnement de cet algorithme où l'on suppose une mémoire centrale composée de trois cases initialement vides. La lettre D signale l'occurrence de défaut de pages. 
Fig 6 : Remplacement de pages LRU

3.3 Complément sur le format d'une entrée de la table des pages d'un processus.

 
 
Finalement, une entrée de la table des pages d'un processus comprendra souvent les champs suivants :
  • le bit V de validation pour indiquer si la page est présente ou non en mémoire centrale
  • le champ A pour Accès qui contient les informations pour l'algorithme de remplacement de pages. Par exemple, pour l'algorithme FIFO, ce champ contiendra la date de chargement de la page; pour l'algorithme LRU, la date du dernier accès à la page.
  • Le bit M pour Modification permet de savoir si la page a été modifiée lors de sa présence en mémoire centrale. Si oui, il faudra réécrire cette page sur le disque avant de l'écraser par une nouvelle page.
  • Le champ D pour Droits, qui contient la définition des droits d'accès à la page en lecture / écriture / exécution.
  • Le champ n° de case physique, pour la conversion vers l'adresse physique.

4 Algorithme pour la conversion d'une adresse logique paginée en adresse physique.

 
 
Nous donnons ci-dessous le schéma général de l'algorithme suivi par le système d'exploitation lors de la conversion d'une adresse logique vers une adresse physique. Une daresse est un couple constitué des champs page et déplacement. 
Procedure Conversion (in adresse_virtuelle, out adresse_physique)
 
 
 
 
debut
 
 
entrée := adresse_virtuelle.page + adresse_table(processus)
 
 
Si (entrée.V = FAUX)
 
 
alors
 
 
-- defaut de page
 
 
     Charger_page(adresse_virtuelle.page, adresse_case);
 
 
   entrée.V = vrai;
 
 
     entrée. case := adresse_case;
 
 
fsi
 
 
adresse physique := adresse_case + adresse_virtuelle.deplacement;
 
 
return (adresse_physique);
 
 
fin
 
 
Procedure Charger_Page (in page, out case)
 
 
 
 
debut
 
 
Si (Trouver_case_Libre( ) = FAUX)
 
 
alors
 
 
  Choisir_case_à_libérer (case_à_liberer, page_victime);
 
 
  si (page_victime.M = Vrai)
 
 
  alors
 
 
   Ecrire_Disque(page_victime)
 
 
  Fsi
 
 
Fsi
 
 
Lire_Disque(case_à_liberer, page)
 
 
return (case_à_liberer)
 
 
fin
 
 

5 Notion d'écroulement

Définition : Ecroulement
On appelle Ecroulement, une haute activité de pagination. Un processus s'écroule lorsqu'il passe plus de temps à paginer qu'à s'exécuter.
 
 
La figure 7 illustre ce phénomène. Elle représente le taux d'utilisation du processeur en fonction du degré de multiprogrammation , c'est-à-dire en fonction du nombre de processus chargés en mémoire centrale. Sur cette figure, on voit clairement que l'utilisation du processeur augmente jusqu'à un certain seuil au delà duquel cette utilisation chute complètement : cette chute correspond à une trop grande activité de pagination des processus qui passent le plus clair de leur temps en entrée/sortie car ils n'ont pas suffisamment de cases mémoires disponibles pour contenir les pages relatives à leur espace de travail courant. 
Fig 7 : Phénomène d'écroulement
Mémoire virtuelle Mémoire virtuelle